package com.bdq.basic.infrastructure.util;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.IdUtil;
import com.bdq.basic.infrastructure.enums.FileEnum;
import com.bdq.basic.infrastructure.model.dto.FileUploadInfraDTO;
import com.bdq.common.constants.Constant;
import com.bdq.common.exception.ServerException;
import lombok.extern.slf4j.Slf4j;

import java.io.File;

/**
 * @author malei
 * @date 2024-05-02 14:59
 */
@Slf4j
public class FileUploadUtil {

    /**
     * 存储
     *
     * @param infraDTO
     * @return
     */
    public static String save(FileUploadInfraDTO infraDTO) {
        // 创建文件名，使用UUID确保唯一性
        String fileName = IdUtil.fastSimpleUUID().concat(".").concat(infraDTO.getSuffix());

        // 指定文件保存的目录
        String directoryPath = Constant.FILE_DIRECTORY.concat(File.separator).concat(infraDTO.getFileEnum().getPath());

        // 确保目录存在
        FileUtil.mkdir(directoryPath);

        // 构建完整的文件路径
        String filePath = FileUtil.normalize(directoryPath.concat(File.separator).concat(fileName));

        // 写入文件
        FileUtil.writeBytes(infraDTO.getContent(), filePath);

        // 返回相路径
        return infraDTO.getFileEnum().getPath().concat(File.separator).concat(fileName);
    }
}
